package com.example.uploadingfiles.storage;

import org.springframework.core.io.Resource;
import org.springframework.web.multipart.MultipartFile;

import java.nio.file.Path;
import java.util.stream.Stream;

/**
 * 存储服务接口
 */
public interface StorageService {

	/**
	 * 初始化
	 */
	void init();
	/**
	 * 存储
	 * @param file ： 在多部分请求中接收到的上传文件的表示形式
	 */
	void store(MultipartFile file);
	/**
	 * 加载所有
	 * @return ：流元素类型
	 */
	Stream<Path> loadAll();
	/**
	 * 加载
	 * @param filename ：文件名
	 * @return ：路径
	 */
	Path load(String filename);
	/**
	 * 资源加载
	 * @param filename
	 * @return ： 文件或类路径资源的实际类型中抽象的资源描述符
	 */
	Resource loadAsResource(String filename);
	/**
	 * 删除所有
	 */
	void deleteAll();
}
